home *** CD-ROM | disk | FTP | other *** search
/ System Booster / System Booster.iso / Systemmonitors / MemMon / MemMonII.mod < prev    next >
Text File  |  1996-09-26  |  7KB  |  227 lines

  1. (* 
  2. MemMonII  Copyright by Andreas Gunßer, Großheppacherstr. 34,
  3.                                        D-7056 Weinstadt-Endersbach,
  4.                                        West-Germany
  5.  
  6. History-list:
  7.   12-Oct-1990 -- Version 2.0 by Andreas Gunßer
  8.  
  9.                    
  10. for more information refer to MemMonII.doc
  11. *)                                     
  12.  
  13.  
  14. MODULE MemMonII;
  15.  
  16. FROM SYSTEM       IMPORT ADR;
  17. FROM Intuition    IMPORT NewWindow,WindowPtr,WindowFlags,WindowFlagSet,
  18.                          IDCMPFlags,IDCMPFlagSet,ScreenFlagSet,wbenchScreen,
  19.                          OpenWindow,CloseWindow,IntuiText,PrintIText,SizeWindow,
  20.                          SetWindowTitles,IntuiMessage,
  21.                          OpenIntuition,IntuitionBase;
  22. FROM Exec         IMPORT GetMsg,ReplyMsg;
  23. FROM Arts         IMPORT Assert;
  24. FROM Dos          IMPORT Delay;
  25. FROM Conversions  IMPORT ValToStr;
  26. FROM Strings      IMPORT Insert;
  27. FROM Heap         IMPORT Available;
  28. FROM Graphics     IMPORT jam1,RastPortPtr,WritePixel,ScrollRaster,SetAPen;
  29.  
  30. TYPE String    = ARRAY [0..100] OF CHAR;
  31.  
  32. VAR Window        : NewWindow;
  33.     WindowPter    : WindowPtr;
  34.     class         : IDCMPFlagSet;
  35.     IntuiMsg      : POINTER TO IntuiMessage;
  36.     WindowTitle   : String;
  37.     lauf          : LONGCARD;
  38.     IntuiPtr      : POINTER TO IntuitionBase;
  39.     actWindowPter : WindowPtr;
  40.     WindowLarge   : BOOLEAN; (* TRUE = large, FALSE = klein*)        
  41.     gesSpeicher   : LONGINT;
  42.         
  43. (* ---------------------------------------------------------------------------*)
  44. (* -------------------------- Prozeduren -------------------------------------*)
  45.  
  46. PROCEDURE DumpGraphic (Speicher : LONGINT);
  47. VAR wrPort    : RastPortPtr;
  48.     dummyint  : INTEGER;
  49.     speicherx : LONGINT;
  50.        
  51. BEGIN (* DumpGraphic *)          
  52.   Speicher := Speicher DIV 2;
  53.   wrPort := WindowPter^.rPort;
  54.   SetAPen (wrPort,3);
  55.   speicherx := (30 - (Speicher DIV 50000));
  56.   IF (speicherx < 1) THEN 
  57.     speicherx := 1;
  58.   ELSIF (speicherx > 29) THEN 
  59.     speicherx := 29;
  60.   END (* IF *);    
  61.   dummyint := WritePixel (wrPort,540,speicherx);
  62.   dummyint := WritePixel (wrPort,541,speicherx);
  63.   ScrollRaster (wrPort,2,0,175,11,542,29);
  64. END DumpGraphic;
  65.                                         
  66.     
  67. PROCEDURE Credits;
  68. VAR TextZeile1,
  69.     TextZeile2,
  70.     TextZeile3    : IntuiText;
  71.     TextZeile1Txt,
  72.     TextZeile2Txt,
  73.     TextZeile3Txt : ARRAY [0..50] OF CHAR;
  74.  
  75. BEGIN (* Credits *)
  76.   Delay (5);
  77.   TextZeile1Txt := "Memory Monitor";
  78.   WITH TextZeile1 DO
  79.     frontPen    := 3;
  80.     backPen     := 0;
  81.     drawMode    := jam1;
  82.     leftEdge    := 28;
  83.     topEdge     := 11;
  84.     iTextFont   := NIL;
  85.     iText       := ADR (TextZeile1Txt);
  86.     nextText    := ADR (TextZeile2);
  87.   END (* WITH *);
  88.   
  89.   TextZeile2Txt := "programmed by ";
  90.   WITH TextZeile2 DO
  91.     frontPen    := 3;
  92.     backPen     := 0;
  93.     drawMode    := jam1;
  94.     leftEdge    := 28;
  95.     topEdge     := 20;
  96.     iTextFont   := NIL;
  97.     iText       := ADR (TextZeile2Txt);
  98.     nextText    := ADR (TextZeile3);
  99.   END (* WITH *);    
  100.   
  101.   TextZeile3Txt := "Andreas Gunßer";
  102.   WITH TextZeile3 DO
  103.     frontPen    := 3;
  104.     backPen     := 0;
  105.     drawMode    := jam1;
  106.     leftEdge    := 28;
  107.     topEdge     := 30;
  108.     iTextFont   := NIL;
  109.     iText       := ADR (TextZeile3Txt);
  110.     nextText    := NIL;
  111.   END (* WITH *);
  112.   
  113.   PrintIText (WindowPter^.rPort,ADR (TextZeile1),0,0);  
  114.    TextZeile1.frontPen := 2;
  115.    TextZeile2.frontPen := 2;
  116.    TextZeile3.frontPen := 2;
  117.   PrintIText (WindowPter^.rPort,ADR (TextZeile1),1,1);     
  118. END Credits;   
  119.     
  120.             
  121.  
  122. PROCEDURE CloseDown;
  123. BEGIN
  124.   CloseWindow (WindowPter);
  125. END CloseDown;  
  126.  
  127.  
  128. PROCEDURE DumpMem (WhichWindow : WindowPtr) : LONGINT;
  129. VAR chipav,
  130.     fastav,
  131.     totalav        : LONGINT;
  132.     SpeicherString : ARRAY [0..99] OF CHAR;
  133.     chipstring,
  134.     faststring,
  135.     totalstring    : ARRAY [0..10] OF CHAR;
  136.     dummychar      : CHAR;
  137.     dummybool      : BOOLEAN;
  138.     ScreenString   : ARRAY [0..79] OF CHAR;
  139.     
  140. BEGIN (* DumpMem *)
  141.   chipav  := Available (TRUE);
  142.   totalav := Available (FALSE);
  143.   fastav  := totalav-chipav;
  144.   dummychar := " ";
  145.   ScreenString := "MemMon    © Copyright 15-Aug-1990 by Andreas Gunßer"; 
  146.   ValToStr (chipav,TRUE,chipstring,10,10,dummychar,dummybool);
  147.   ValToStr (fastav,TRUE,faststring,10,10,dummychar,dummybool);
  148.   ValToStr (totalav,TRUE,totalstring,10,10,dummychar,dummybool);
  149.   Insert (SpeicherString,0,"Total =");
  150.   Insert (SpeicherString,7,totalstring);
  151.   Insert (SpeicherString,18,"Fast =");
  152.   Insert (SpeicherString,24,faststring);
  153.   Insert (SpeicherString,35,"Chip =");
  154.   Insert (SpeicherString,41,chipstring);
  155.   SetWindowTitles (WhichWindow,ADR (SpeicherString),ADR (ScreenString));
  156.   RETURN (totalav);
  157. END DumpMem;
  158.   
  159. (* ---------------------------------------------------------------------------*)
  160. (* --------------------------------- MemMon ----------------------------------*)
  161.  
  162.  
  163. BEGIN (* MemMon *)
  164.   IntuiPtr := OpenIntuition ();
  165.   lauf := 1;
  166.   WindowLarge := FALSE;
  167.   WindowTitle := "MemMon © by Angus";
  168.   WITH Window DO
  169.     leftEdge    := 0;
  170.     topEdge     := 0;
  171.     width       := 550;
  172.     height      := 10;
  173.     detailPen   := 0;
  174.     blockPen    := 1;
  175.     idcmpFlags  := IDCMPFlagSet {closeWindow,menuPick,menuVerify};
  176.     flags       := WindowFlagSet {windowDrag,windowDepth,windowClose,
  177.                                   activate};
  178.     firstGadget := NIL;
  179.     checkMark   := NIL;
  180.     title       := ADR (WindowTitle);
  181.     bitMap      := NIL;
  182.     type        := ScreenFlagSet {wbenchScreen};
  183.     minWidth    := 220;
  184.     maxWidth    := 550; 
  185.     minHeight   := 10;
  186.     maxHeight   := 40; 
  187.   END;
  188.  
  189.   WindowPter := OpenWindow (Window);
  190.   Assert (WindowPter # NIL, ADR ("Window nicht zu öffnen"));
  191.   
  192.   
  193.   LOOP
  194.     REPEAT
  195.       lauf := (lauf +1);
  196.       actWindowPter := IntuiPtr^.activeWindow;
  197.       IF (lauf > 4000000000) THEN
  198.         lauf := 1;
  199.       ELSIF ((lauf MOD 25) = 0) THEN
  200.         gesSpeicher := DumpMem (WindowPter);
  201.         IF (WindowLarge = TRUE) THEN
  202.           DumpGraphic (gesSpeicher);
  203.         END (* IF *)  
  204.       END;
  205.       Delay (2);
  206.       IntuiMsg := GetMsg (WindowPter^.userPort);
  207.       WHILE IntuiMsg # NIL DO
  208.         class := IntuiMsg^.class;
  209.         ReplyMsg (IntuiMsg);
  210.         IF (closeWindow IN class) THEN
  211.           EXIT;
  212.         ELSIF ((menuPick IN class) AND (WindowLarge = FALSE)) THEN
  213.           SizeWindow (WindowPter,0,30);
  214.           Credits;
  215.           WindowLarge := TRUE;
  216.         ELSIF ((menuPick IN class) AND (WindowLarge = TRUE)) THEN
  217.           SizeWindow (WindowPter,0,-30);
  218.           WindowLarge := FALSE;
  219.         END (* IF *);
  220.         IntuiMsg := GetMsg (WindowPter^.userPort);
  221.       END (* WHILE *);
  222.     UNTIL (lauf > 4000000005);
  223.   END (* LOOP*);
  224.  
  225.   CloseDown;
  226. END MemMonII.  
  227.